#!/bin/sh
#
# Copyright The OpenZipkin Authors
# SPDX-License-Identifier: Apache-2.0
#

# ENTRYPOINT script that starts Elasticsearch
#
# This intentionally locates config using the current working directory, in order to consolidate
# Dockerfile instructions to WORKDIR
set -eu

# This file inlines what's done by the Elasticsearch script machinery, which doesn't work here due
# to our images using busybox (not bash). See #3044
#
# Notable settings:
# * lower heap size
# * tmpdir manual as https://github.com/elastic/elasticsearch/pull/31003 was closed won't fix
# * disable log4j JMX not just because we don't use it...
#  * ES enables security manager https://github.com/elastic/elasticsearch/issues/21932#issuecomment-264435034

# Configure the Docker HEALTHCHECK
export HEALTHCHECK_PORT=9200
export HEALTHCHECK_PATH=/_cluster/health

# -cp 'classes:lib/*' allows layers to patch the image without packaging or overwriting jars
# We allow security manager (via flag to prevent JRE 21 crash) as Elasticsearch.main needs it.
exec java -cp 'classes:lib/*' ${JAVA_OPTS} \
  -Djava.security.manager=allow \
  -Djava.io.tmpdir=/tmp \
  -Dlog4j2.disable.jmx=true \
  -Des.path.home=$PWD -Des.path.conf=$PWD/config \
  org.elasticsearch.bootstrap.Elasticsearch "$@"
